<?php
/**
 * Login Controller. Executa todas as ações de autenticação do usuário.
 * @author João Carlos
 * @package PC4_Controlador
 */
class PC4_Controlador_Login extends PC4_Controlador_APP {
	
	protected $urlLogin, $urlLogado, $viewLogin;
	/**
	* Construtor.
	* @return object
	*/
	function __construct($porteiro = null, $urlLogin = 'admin/login', $urlLogado = 'admin/main', $viewLogin = '', $filtros = array()){
		parent::__construct($filtros); // Chama o construtor da PC4_Controlador_APP.
		
		$this->layout->view = 'login';
		$this->layout->addCSS(array('reset', 'style', 'invalid', 'blue'));
		
		if (empty($porteiro)) {
			$this->porteiro = new TICE_Util_AutenticadorSessaoAtivo();
		}
		else {
			$this->porteiro = $porteiro;
		}
		$this->urlLogin = $urlLogin;
		$this->urlLogado = $urlLogado;
		$this->viewLogin = (empty($viewLogin)) ? $this->urlLogin : $viewLogin;
		
		$CI =& get_instance();
		$this->porteiro->session = $CI->session;
		$this->porteiro->modelo->db = $CI->db;
		
		$this->sessao = new Zend_Session_Namespace($this->router->class . '_session');
		$this->dados['action'] = site_url($this->urlLogin . '/logar');
	}
	
	/**
	 * Exibe o formulário de login.
	 * @retrun void
	 */
	function index(){
		$this->dados['error'] = false;
		$this->sessao->dados = $this->dados;
		$this->load->view($this->viewLogin, $this->dados);
	}
	
	/**
	 * Verifica se as informações enviadas pelo usuário são validas ou não.
	 */
	function logar(){
		$ok = $this->porteiro->logar($_POST[$this->porteiro->campoLogin], $_POST['senha']);
		if ($ok) {
			redirect($this->urlLogado);
		}
		else {
			$this->dados['error'] = true;
			$this->dados['error_msg'] = implode('<br />', $this->porteiro->getErros());
			$this->sessao->dados = $this->dados;
			$this->load->view($this->viewLogin, $this->dados);
		}
	}
	
	/**
	 * Encerra a sessão
	 */
	function logout() {
		$this->porteiro->logout();
		redirect($_SERVER['HTTP_REFERER']);
	}
		
}

/* End of file login.php */
/* Location: ./system/application/controllers/login */